iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0

列表推導式(List Comprehension)是 Python 中的一種簡潔語法,用於創建新的列表。其目標是使程式碼更加直觀和易於閱讀。基本的列表推導式語法形式為:

[表達式 for 元素 in 可迭代對象]

這個結構中的「表達式」代表新列表中的每個元素,而「元素」來自於可迭代對象(如列表、字串等)。這樣的寫法不僅比傳統 for 迴圈更簡潔,還能更高效地創建列表。兩者功能相同,但後者更加簡潔易讀。例如,以下程式碼使用傳統迴圈創建一個包含 1 到 10 的平方數的列表:

squares = []
for i in range(1, 11):
    squares.append(i**2)

而用列表推導式可以改寫為:

squares = [i**2 for i in range(1, 11)]

1. 結合條件的列表推導式
列表推導式還可以與條件語句結合,過濾特定條件的元素。語法形式如下:

[表達式 for 元素 in 可迭代對象 if 條件]

例如,要創建一個僅包含偶數平方的列表,像是只有滿足 i % 2 == 0 條件的數字才會被平方並加入 even_squares 列表中,可以寫成:

even_squares = [i**2 for i in range(1, 11) if i % 2 == 0]

2. 字典推導式與集合推導式
除了列表推導式,Python 也支援字典推導式(Dictionary Comprehension)和集合推導式(Set Comprehension)。字典推導式用來創建新的字典,語法形式為:

{鍵: 值 for 元素 in 可迭代對象}

例如,將 1 到 5 的數字及其平方數組成字典:

squares_dict = {i: i**2 for i in range(1, 6)}

集合推導式則用來創建集合,語法與列表推導式相似,但以 {} 包裹結果這樣創建的 even_set 僅包含 2, 4, 6, 8, 10 這些偶數:

even_set = {i for i in range(1, 11) if i % 2 == 0}

使用推導式能使程式碼更加簡潔且易於理解,尤其當需要創建或轉換資料結構時非常方便。列表推導式的優勢在於它能同時執行過濾和運算,減少重複的程式碼。雖然推導式在簡單情境下很有效,但對於過於複雜的操作來說,還是傳統 for 迴圈更容易維護和除錯。

那今天就先這樣。/images/emoticon/emoticon29.gif


上一篇
字串處理
下一篇
元類 (Metaclasses) 與類
系列文
從Python入門到自製遊戲:30天鐵人挑戰之旅26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言